package com.zjcloud.jwgl.mapper;

import java.util.List;
import com.zjcloud.jwgl.domain.AcAlgorithmConfigHistory;

/**
 * 算法配置历史Mapper接口
 * 
 * @author zjcloud
 * @date 2024-12-19
 */
public interface AcAlgorithmConfigHistoryMapper 
{
    /**
     * 查询算法配置历史
     * 
     * @param id 算法配置历史主键
     * @return 算法配置历史
     */
    public AcAlgorithmConfigHistory selectAcAlgorithmConfigHistoryById(Long id);

    /**
     * 查询算法配置历史列表
     * 
     * @param acAlgorithmConfigHistory 算法配置历史
     * @return 算法配置历史集合
     */
    public List<AcAlgorithmConfigHistory> selectAcAlgorithmConfigHistoryList(AcAlgorithmConfigHistory acAlgorithmConfigHistory);

    /**
     * 新增算法配置历史
     * 
     * @param acAlgorithmConfigHistory 算法配置历史
     * @return 结果
     */
    public int insertAcAlgorithmConfigHistory(AcAlgorithmConfigHistory acAlgorithmConfigHistory);

    /**
     * 修改算法配置历史
     * 
     * @param acAlgorithmConfigHistory 算法配置历史
     * @return 结果
     */
    public int updateAcAlgorithmConfigHistory(AcAlgorithmConfigHistory acAlgorithmConfigHistory);

    /**
     * 删除算法配置历史
     * 
     * @param id 算法配置历史主键
     * @return 结果
     */
    public int deleteAcAlgorithmConfigHistoryById(Long id);

    /**
     * 批量删除算法配置历史
     * 
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteAcAlgorithmConfigHistoryByIds(Long[] ids);

    /**
     * 根据配置ID查询历史记录
     * 
     * @param configId 配置ID
     * @return 算法配置历史集合
     */
    public List<AcAlgorithmConfigHistory> selectByConfigId(Long configId);

    /**
     * 根据操作类型查询历史记录
     * 
     * @param operationType 操作类型
     * @return 算法配置历史集合
     */
    public List<AcAlgorithmConfigHistory> selectByOperationType(String operationType);

    /**
     * 根据操作人查询历史记录
     * 
     * @param operatorId 操作人ID
     * @return 算法配置历史集合
     */
    public List<AcAlgorithmConfigHistory> selectByOperatorId(Long operatorId);

    /**
     * 查询回滚记录
     * 
     * @return 算法配置历史集合
     */
    public List<AcAlgorithmConfigHistory> selectRollbackRecords();

    /**
     * 根据配置版本查询历史记录
     * 
     * @param configId 配置ID
     * @param version 配置版本
     * @return 算法配置历史
     */
    public AcAlgorithmConfigHistory selectByConfigIdAndVersion(Long configId, String version);

    /**
     * 查询配置的最新历史记录
     * 
     * @param configId 配置ID
     * @return 算法配置历史
     */
    public AcAlgorithmConfigHistory selectLatestByConfigId(Long configId);

    /**
     * 根据时间范围查询历史记录
     * 
     * @param acAlgorithmConfigHistory 查询条件（包含时间范围）
     * @return 算法配置历史集合
     */
    public List<AcAlgorithmConfigHistory> selectByTimeRange(AcAlgorithmConfigHistory acAlgorithmConfigHistory);

    /**
     * 清理过期历史记录
     * 
     * @param retentionDays 保留天数
     * @return 删除记录数
     */
    public int cleanExpiredHistory(int retentionDays);
}